
# python高级用法
# 1.切片 slice（相当于java中的substr，只不过比subStr更强大，可以对list/tuple/str都能进行操作，原类型是什么，切片后还是什么类型）
# : 切片是按照索引进行取值，切片的索引可以省略，如果省略，默认为0,正着取是从左到右（索引为0开始，取到索引为N-1），负数从右到左（索引为-1开始，取到-N）
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
# ['Michael', 'Sarah', 'Tracy']
print(L[0:3])
# ['Michael', 'Sarah', 'Tracy']
print(L[:3])
# ['Sarah', 'Tracy', 'Bob', 'Jack']
print(L[1:])
# ['Bob', 'Jack']
print(L[-2:])
# ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
print(L[:])
print(L[::])
# 每隔2 个取一个
# ['Michael', 'Tracy']
print(L[:4:2])
# ['Michael', 'Tracy', 'Jack']
print(L[::2])

# 列表生成式
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(range(1, 11))
# 快速生成X统一处理的
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# for前面必须是个表达式
L1=[x * x for x in range(1, 11)]
print(L1)
l2=[2*y-1 for y in range(1, 11)]
print(l2)
# 两层循环全排列
# ['AB', 'AC', 'AD', 'BA', 'BC', 'BD', 'CA', 'CB', 'CD', 'DA', 'DB', 'DC']
L3=[m+n for m in 'ABC' for n in 'XYZ']
print(L3)
# import os # 导入os模块，模块的概念后面讲到
# [d for d in os.listdir('.')] # os.listdir可以列出文件和目录
# ['.emacs.d', '.ssh', '.Trash', 'Adlm', 'Applications', 'Desktop', 'Documents', 'Downloads', 'Library', 'Movies', 'Music', 'Pictures', 'Public', 'VirtualBox VMs', 'Workspace', 'XCode']
# 可以同时使用两个或多个变量
d={'x': 'A', 'y': 'B', 'z': 'C'}
for k, v in d.items():
    print(k, '=', v)
# ['x=A', 'y=B', 'z=C']
L4=[k+'='+v for k, v in d.items()]
print(L4)